/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.mvc.ligasDeportivas;

import com.beans.BeanListaResultLigas;
import com.beans.LigaBean;
import com.beans.ResultadoBean;
import com.beans.UsuarioBean;
import com.debug.Debug;
import com.gestores.GestionResultadosLigas;
import com.mvc.RequestHandler;
import com.util.Utils;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javazoom.upload.MultipartFormDataRequest;
import javazoom.upload.UploadException;
import javazoom.upload.UploadFile;

/**
 *
 * @author victor
 */
public class ListaResultadosLiga implements RequestHandler {

    public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, NamingException {
        HttpSession sesion = request.getSession();
        ArrayList lista;
        
        UsuarioBean usuario = (UsuarioBean) sesion.getAttribute("usuario");
        
        String idLiga = "";
        String historica = "";
        String nombre = "";
        String accion = "";
        String mensaje="";
        //Comprobando si es multipart
        if(MultipartFormDataRequest.isMultipartFormData(request)){
            //Es multipart"
            try {
                MultipartFormDataRequest mrequest = new MultipartFormDataRequest(request);
                idLiga=mrequest.getParameter("idLiga");
                historica = mrequest.getParameter("historica");
                nombre = mrequest.getParameter("nombre");
                accion = mrequest.getParameter("modo");
                if(accion.equalsIgnoreCase("A")){
                    mensaje=crearResultado(mrequest,response,usuario);
                }
            } catch (UploadException ex) {
                ex.printStackTrace();
            }
        }else{
            //No es multipart
            idLiga=request.getParameter("idLiga");            
            historica = request.getParameter("historica");
            nombre = request.getParameter("nombre");
            accion = request.getParameter("accion");
            if(accion==null) accion="";
            if(accion.equalsIgnoreCase("B")){
                    System.out.println("Borrando resultado");
                    String idResultado=request.getParameter("idResultado");
                    mensaje=GestionResultadosLigas.getInstance().eliminarResultado(idResultado, idLiga, usuario);
            }
        }
        if(idLiga==null)idLiga="";
        if(historica==null) historica="NO";
        if(nombre==null) nombre="";
        if(accion==null) accion="";
        
        lista = GestionResultadosLigas.getInstance().todosResultadosLiga(idLiga);
        LigaBean liga=new GestionResultadosLigas().consultaLiga(idLiga);
        //Enviamos los valores a la pantalla (al jsp)
        request.setAttribute("mensaje", mensaje);
        
        request.setAttribute("liga", liga);
        request.setAttribute("lista", lista);
        request.setAttribute("historica", historica);
        
        request.setAttribute("idLiga", idLiga);
        request.setAttribute("nombre", nombre);
        request.setAttribute("accion", accion);
        
    }

    private String crearResultado(MultipartFormDataRequest mrequest, HttpServletResponse response, UsuarioBean usuario) {
        String mensaje = "El resultado no se ha subido por superar 1 Mb.";
        System.out.println("Subiendo archivo");
        try {            
            javazoom.upload.UploadBean upload = new javazoom.upload.UploadBean();
            upload.setFolderstore("/var/lib/tomcat5.5/webapps/archivos/ligas/resultados");
            upload.setFilesizelimit(1000000); //En bytes 
            
            Hashtable files = mrequest.getFiles();
            UploadFile file;
            file = (UploadFile) files.get("uploadfile");
            int punto=file.getFileName().lastIndexOf('.');

            String nombreArchivo = file.getFileName();
            String extension = nombreArchivo.substring(punto);

            if (extension.equalsIgnoreCase(".php") || extension.equalsIgnoreCase(".exe")) {
                Debug.getInstance().putLog(mrequest.getRequest(), "[CrearResultado]Se ha intentado subir un archivo "+extension);
                return "Tipo de archivo no permitido";
            }

            String nArchivo = com.util.genericos.nombreArchivo("res")+nombreArchivo.substring(punto);

            if (file != null && file.getFileName()!=null) {    
                ResultadoBean resultado=new ResultadoBean();
                resultado.setCodLiga(mrequest.getParameter("idLiga"));
                resultado.setFechaCreacion(Utils.fechaActualString());
                resultado.setJornada(mrequest.getParameter("jornada"));
                resultado.setObservaciones(mrequest.getParameter("observaciones"));
                resultado.setArchivo(nArchivo);
                file.setFileName(nArchivo);

                upload.store(mrequest, "uploadfile");

                if(GestionResultadosLigas.getInstance().crearResultado(resultado, usuario)){
                    mensaje="Se ha creado un nuevo resultado";
                }else{
                    mensaje="Error al crear el resultado";
                }
            }else{
                mensaje="Debe seleccionar un documento.<br>No se han insertado los datos, vuelva a intentarlo";
            }
        } catch (UploadException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return mensaje;
    }
}
